﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class ПользователиПолныеПрава
	{
		////////////////////////////////////////////////////////////////////////////////
		// Процедуры, выполнение которых требует привилегированного режима
		// Функция проверяет существования пользователя информационной базы
		// Параметры
		// ЗначениеПоиска - уникальный идентификатор, строка - УИД пользователя ИБ
		//												или имя пользователя ИБ
		//
		// Возвращаемое значение:
		// Истина	- пользователь существует
		// Ложь		- пользователь не существует
		//

		public object ПользовательСуществует(/*знач ЗначениеПоиска*/)
		{
			if(true/*ТипЗнч(ЗначениеПоиска) = Тип("УникальныйИдентификатор")*/)
			{
				//ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ЗначениеПоиска);
			}
			if(true/*ПользовательИБ = Неопределено*/)
			{
			}
			return null;
		}
		// Процедура добавляетисполнителя  в регистр Роли и исполнители, если
		// в регистре еще нет записей по исполнителю
		//

		public void ЗаписатьИсполнителя(/*Исполнитель, Роли = Неопределено*/)
		{
			//НаборЗаписей = РегистрыСведений.РолиИИсполнители.СоздатьНаборЗаписей();
			//НаборЗаписей.Отбор.Исполнитель.Установить(Исполнитель);
			//НаборЗаписей.Прочитать();
			if(true/*НаборЗаписей.Количество() > 0*/)
			{
			}
			if(true/*Роли = Неопределено*/)
			{
				//НоваяЗапись = НаборЗаписей.Добавить();
				//НоваяЗапись.Организация	= Справочники.Организации.ПустаяСсылка();
				//НоваяЗапись.Исполнитель	= Исполнитель;
			}
			//НаборЗаписей.Записать();
		}
		// Процедура, определяет пользователя, под которым запущен сеанс и пытается
		// найти соответсвие ему в справочнике Пользователи. Если соответствие
		// не найдено - создается новый элемент. Параметр сеанса ТекущийПользователь
		// устанавливается как ссылка на найденный (созданный) элемент справочника.
		//

		public void ОпределитьТекущегоПользователя(/*Знач ИмяПараметра, УстановленныеПараметры*/)
		{
			if(true/*ИмяПараметра <> "ТекущийПользователь"*/)
			{
			}
			//СоздатьПользователя = Ложь;
			if(true/*ПользователиИнформационнойБазы.ПолучитьПользователей().Количество() = 0*/)
			{
				//ИмяПользователя			= "<Не указан>";
				//ПолноеИмяПользователя	= "<Не указан>";
				//Запрос = Новый Запрос;
				/*Запрос.Текст = "
		|ВЫБРАТЬ ПЕРВЫЕ 1
		|	Пользователи.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.Пользователи КАК Пользователи
		|ГДЕ
		|	Пользователи.Код = &Имя";*/
				//Запрос.Параметры.Вставить("Имя", ИмяПользователя);
				//Результат = Запрос.Выполнить();
				if(true/*Результат.Пустой()*/)
				{
					//СоздатьПользователя = Истина;
					//ИдентификаторПользователяИБ = Новый УникальныйИдентификатор;
				}
			}
			if(true/*СоздатьПользователя*/)
			{
				//СсылкаНового = Справочники.Пользователи.ПолучитьСсылку();
				//ПараметрыСеанса.ТекущийПользователь = СсылкаНового;
				//НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();
				//НовыйПользователь.Код			= ИмяПользователя;
				//НовыйПользователь.Наименование	= ПолноеИмяПользователя;
				//НовыйПользователь.ИдентификаторПользователяИБ = ИдентификаторПользователяИБ;
				//НовыйПользователь.УстановитьСсылкуНового(СсылкаНового);
				//УстановитьНастройкиПоУмолчанию(НовыйПользователь.Ссылка);
			}
			if(true/*НЕ Константы.РазделятьЗадачиПоОрганизациям.Получить()*/)
			{
				//ТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;
				if(true/*Константы.РазделятьЗадачиПоРолямИсполнителей.Получить()*/)
				{
					//РолиПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Роли;
					//СоответствиеРолей = Новый Соответствие;
					//МассивРолейИсполнителей = Новый Массив;
					//МассивРолейИсполнителей.Добавить(Справочники.РолиИсполнителей.Расчетчик);
					//МассивРолейИсполнителей.Добавить(Справочники.РолиИсполнителей.Кадровик);
					//СоответствиеРолей.Вставить(Метаданные.Роли.ПолныеПрава, МассивРолейИсполнителей);
					//ПользователиПереопределяемый.ДополнитьСоответствиеРолей(СоответствиеРолей);
				}
			}
			//УстановленныеПараметры.Вставить(ИмяПараметра);
		}

		public object ПроверитьПользователяПоКоду(/*ИмяПользователя*/)
		{
			if(true/*НЕ ПроверитьНеоднозначностьИмениПользователя(ИмяПользователя)*/)
			{
				/*ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
								НСтр("ru = 'В информационной базе уже существует пользователь с таким именем: %1 (совпадают первые %2 символов)'"),
								ИмяПользователя,
								Метаданные.Справочники.Пользователи.ДлинаКода);*/
				//ВызватьИсключение ТекстСообщенияОбОшибке;
			}
			//ДопустимаяДлинаИмени = Метаданные.Справочники.Пользователи.ДлинаКода;
			if(true/*СтрДлина(ИмяПользователя) > ДопустимаяДлинаИмени*/)
			{
				//ИмяПользователя = Лев(ИмяПользователя, ДопустимаяДлинаИмени);
			}
			//Запрос = Новый Запрос;
			/*Запрос.Текст = "
	|ВЫБРАТЬ ПЕРВЫЕ 1
	|	Пользователи.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.Пользователи КАК Пользователи
	|ГДЕ
	|	Пользователи.Код = &ИмяПользователя";*/
			//Запрос.Параметры.Вставить("ИмяПользователя", ИмяПользователя);
			//Результат = Запрос.Выполнить();
			if(true/*Результат.Пустой()*/)
			{
			}
			return null;
		}
		// Функция проверяет, что имя пользователя в пределах первых пятидесяти
		// символов является уникальным. Пятьдесят символов - длина кода справочника
		// Пользователи.
		// Параметры:
		// ИмяПользователя - строка - проверяемое имя пользователя
		// Возвращаемое значение
		// Истина - имя уникально
		// Ложь   - имя неоднозначно
		//

		public object ПроверитьНеоднозначностьИмениПользователя(/*знач ИмяПользователя*/)
		{
			//ТаблицаПользователей = Новый ТаблицаЗначений;
			//ТаблицаПользователей.Колонки.Добавить("Имя");
			//КоличествоСтрокДо = ТаблицаПользователей.Количество();
			//ТаблицаПользователей.Свернуть("Имя");
			if(true/*КоличествоСтрокДо = 0 ИЛИ КоличествоСтрокДо = ТаблицаПользователей.Количество()*/)
			{
			}
			return null;
		}
		// Функция вызывается при обновлении конфигурации на версию 1.0.5.2
		// Выполняет попытку сопоставления / заполнения реквизита "ИдентификаторПользователяИБ"
		// для каждого элемента справочника Пользователи.
		//

		public object ЗаполнитьИдентификаторыПользователей(/**/)
		{
			//СписокПользователей = Справочники.Пользователи.Выбрать();
			//ПользователиИБ = ПользователиИнформационнойБазы.ПолучитьПользователей();
			while(true/*СписокПользователей.Следующий()*/)
			{
				//Пользователь = СписокПользователей.Ссылка;
				if(true/*Не ЗначениеЗаполнено(Пользователь.ИдентификаторПользователяИБ)
			И СокрЛП(Пользователь.Код) <> "<Не указан>"*/)
				{
					/*// идентификатор не заполнен - пытаемся сопоставить по коду
*/
					//ИмяПользователя = СокрЛП(Пользователь.Код);
				}
			}
			//;;
			return null;
		}

		public object ПользовательПоИдентификаторуСуществует(/*УникальныйИдентификатор*/)
		{
			//Запрос = Новый Запрос;
			/*Запрос.Текст = "ВЫБРАТЬ 1
					|ИЗ
					|	Справочник.Пользователи КАК Пользователи
					|ГДЕ
					|	Пользователи.ИдентификаторПользователяИБ = &УникальныйИдентификатор";*/
			//Запрос.УстановитьПараметр("УникальныйИдентификатор", УникальныйИдентификатор);
			//Выборка = Запрос.Выполнить().Выбрать();
			if(true/*Выборка.Следующий()*/)
			{
			}
			return null;
		}

		public object РассинхронизацияИмениПользователя(/*Ссылка*/)
		{
			//ИмяПользователя = СокрЛП(Ссылка.Код);
			//ПолноеИмяПользователя = СокрЛП(Ссылка.Наименование);
			//ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Ссылка.ИдентификаторПользователяИБ);
			if(true/*ПользовательИБ = Неопределено*/)
			{
			}
			if(true/*ПользовательИБ.Имя <> ИмяПользователя
		ИЛИ СокрЛП(ПолноеИмяПользователя) <> СокрЛП(ПользовательИБ.ПолноеИмя)*/)
			{
			}
			return null;
		}

		public object ПользовательИБНеЗанят(/*знач ИмяПользователя*/)
		{
			//ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
			if(true/*ПользовательИБ = Неопределено*/)
			{
			}
			if(true/*ПользовательПоИдентификаторуСуществует(ПользовательИБ.УникальныйИдентификатор)*/)
			{
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЧИЕ ПРОЦЕДУРЫ
		// Процедура выполняет установку настроек по умолчанию для нового пользователя

		public void УстановитьНастройкиПоУмолчанию(/*Пользователь*/)
		{
			//ЗначенияПоУмолчанию = Новый Соответствие;
			//ЗначенияПоУмолчанию.Вставить(ПланыВидовХарактеристик.НастройкиПользователей.ЗапрашиватьПодтверждениеПриЗакрытии, Истина);
			//ЗначенияПоУмолчанию.Вставить(ПланыВидовХарактеристик.НастройкиПользователей.ОсновнойОтветственный, Пользователь);
			//Запрос = Новый Запрос;
			//Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ ПланВидовХарактеристик.НастройкиПользователей ГДЕ Не ЭтоГруппа И Не ПометкаУдаления";
			//Выборка = Запрос.Выполнить().Выбрать();
			//Набор = РегистрыСведений.НастройкиПользователей.СоздатьНаборЗаписей();
			//Набор.Отбор.Пользователь.Установить(Пользователь);
			while(true/*Выборка.Следующий()*/)
			{
				//Запись = Набор.Добавить();
				//Запись.Пользователь = Пользователь;
				//Запись.Настройка = Выборка.Ссылка;
				//Запись.Значение = Запись.Настройка.ТипЗначения.ПривестиЗначение(ЗначенияПоУмолчанию[Запись.Настройка]);
			}
			/*;
	Набор.Записать();*/
		}
	}
}
